package com.sky.proxy.cglibProxy;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;

/**
 * date : 2025-05-27
 *
 * @author : wushikai
 */
class CglibProxyFactory {

    /**
     * @param clazz  传入类型
     * @param methodInterceptor cglib 拦截器
     * */
    static  <T> T createProxy(Class<T> clazz , MethodInterceptor methodInterceptor) {
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(clazz);         // 为加强器指定要代理的业务类（即为下面生成的代理类指定父类）
        enhancer.setCallback(methodInterceptor);        // 设置回调：对于被代理类上所有方法的调用，都会调用 CallBack，而 Callback则需要实现 intercept()方法
        return (T) enhancer.create();
    }

}
